String s1 = "hello";
String s2 = "hello";

sout s1 == s2 // true

String s3 = new String("hello");
String s4 = new String("hello");

sout s3 == s4 // false

sout s1 == s3 // false


class Message<T>{
	private T message;
	
	public T getMessage(){
		return message;
	}
	public void setMessage(T message) {
		this.message = message;
	}
}

public static void main(String[] args){
	Message<String> message = new Message<>();
	message.setMessage("hello");
	fun(message);
	
	private void fun(Message<String> message) {
		sout message.getMessage();
	}
} 

public enum TestEnum{
	BLACE("black",1),RED("red",2),YELLOW("yellow",3)
	
	private String name;
	private int num;
	
	public TestEnum(String name, in num) {
		this.name = name;
		this.num = num;
	}
	public TestEnum(){
		
	}
	
}

public void reflectPrivateConstruct() {
	Class<?> c;
	c = Class.forName("全限定类名");
	
	Constructor<?> declaredConstructor = c.getDeclaredConstructor(String.class, int.class);
	
	declaredConstructor.setAccessible(true);
	
	Object object = declaredConstructor.newInstance("BLUE",999);
	
}